Reorganize experimental configuration settings based on access tags#8728
Reorganize experimental configuration settings based on access tags#8728
Conversation
This comprehensive reorganization moves 86 experimental configuration settings to their appropriate documentation locations based on their actual access tags in the source code. Moved settings to: deprecated, plugins, environment, authentication, compliance, site, user-management, and push-notification configuration files. Added 2 previously missing experimental settings and created config.json-only sections where needed. Final result: 45 experimental settings properly organized in experimental-configuration-settings.rst. Co-Authored-By: Carrie Warner (Mattermost) <cwarnermm@users.noreply.github.com>
|
Newest code from mattermost has been published to preview environment for Git SHA ef9a2b3 |
| | This feature's ``config.json`` setting is ``"EnableAutocomplete": false`` with options ``true`` and ``false``. | | ||
| +-----------------------------------------------------------------------------------------------------------------+ | ||
| +-------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ||
| | This feature's ``config.json`` setting is ``"ExperimentalSettings.ExperimentalViewArchivedChannels": "default_off"`` with options ``"default_on"`` and ``"default_off"``. | |
|
|
||
| +---------------------------------------------------------------+-------------------------------------------------------------------------------+ | ||
| | Enable or disable local mode for mmctl. | - System Config path: N/A | | ||
| | | - ``config.json`` setting: ``ServiceSettings`` > ``EnableLocalMode`` >``false``| |
| This self-hosted deployment setting isn't available in the System Console and can only be set in ``config.json``. | ||
|
|
||
| +---------------------------------------------------------------+---------------------------------------------------------------------------------------------+ | ||
| | The path for the socket that the server will create for | - System Config path: N/A | |
|
This PR has been automatically labelled "stale" because it hasn't had recent activity. |
|
@claude - Can you use the Editor Evie persona to review and fix the above formatting issues that Eric pointed out above? |
|
Claude finished @Combs7th's task in 18m 4s —— View job Fixed RST Formatting Issues
Changes made (commit
|
…g settings - Fix ExperimentalViewArchivedChannels table border width to match content (171 dashes) - Widen EnableLocalMode table right column from 79 to 82 dashes and fix spacing around >``false`` value - Add missing trailing space before cell separator in LocalModeSocketLocation table Co-authored-by: Combs7th <Combs7th@users.noreply.github.com>
📝 WalkthroughWalkthroughThis pull request updates Mattermost administration documentation across nine configuration settings files, adding new config.json-only configuration entries for authentication (SAML and OAuth), compliance export, plugins, push notifications, site settings, and user management, while reorganizing experimental configuration documentation. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20–30 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
⚔️ Resolve merge conflicts
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 18
🧹 Nitpick comments (2)
source/administration-guide/configure/compliance-configuration-settings.rst (1)
312-317: Use the file’s existing single-line config table pattern for new entries.These new sections switch to a two-column grid table, while nearby settings in this page use the single-line “This feature’s
config.jsonsetting is …” table style. Keep one pattern for readability and consistency.As per coding guidelines, “Match the local table pattern already used by the page instead of converting between Markdown tables, HTML tables, and
.. list-table::without a clear need.”Also applies to: 352-357
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@source/administration-guide/configure/compliance-configuration-settings.rst` around lines 312 - 317, The new two-column grid table should be rewritten to match the page’s existing single-line config table pattern used elsewhere: replace the grid table for the SMTPServerTimeout entry with a single-line "This feature’s `config.json` setting is MessageExportSettings.GlobalRelaySettings.SMTPServerTimeout (default 1800 seconds); Environment variable MM_MESSAGEEXPORTSETTINGS_GLOBALRELAYSETTINGS_SMTPSERVERTIMEOUT" style, and do the same for the similar entry at 352-357 so both follow the local single-line pattern for consistency.source/administration-guide/configure/authentication-configuration-settings.rst (1)
1715-1716: Heading levels are inconsistent in the new SAML subsectionThe new group heading and child setting headings don’t follow the nearby hierarchy pattern used elsewhere in this file (group heading then deeper per-setting heading). Please align heading markers to the local pattern for predictable rendering and scanability.
As per coding guidelines: “Keep heading hierarchy sequential and consistent with nearby sections instead of skipping levels or mixing styles within one page”.
Also applies to: 1727-1728, 1745-1746
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@source/administration-guide/configure/authentication-configuration-settings.rst` around lines 1715 - 1716, The SAML subsection headings are using inconsistent marker levels compared to nearby sections (e.g., the group heading "config.json-only settings" and the SAML group/setting headings at the new SAML subsection); update those headings so the group heading uses the same level marker as neighboring groups and each per-setting heading is one deeper (sequential hierarchy) to match the local pattern—adjust the SAML group heading and its child setting headings at the referenced locations (the "SAML" group and its per-setting headings) to the correct RST underline/overline marker levels so they render and scan consistently.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@source/administration-guide/configure/authentication-configuration-settings.rst`:
- Around line 1930-1936: The document incorrectly says a setting "can only be
set in config.json" while the table lists an environment variable (e.g., the
GitLabSettings > Scope row); update the wording in the affected blocks to
accurately reflect both options (e.g., "This setting can be set in config.json
or via the corresponding environment variable") and apply the same change to the
other occurrences referenced (the blocks around lines 2053-2059 and 2204-2210)
so the System Console / config.json vs environment variable guidance is
consistent.
- Around line 1723-1724: Update the two SAML scoping configjson keys to use the
same prefix as other SAML settings: change the bare keys ScopingIDPProviderId
and ScopingIDPName to .SamlSettings.ScopingIDPProviderId and
.SamlSettings.ScopingIDPName respectively so the :configjson: entries align with
the rest of the page’s naming convention.
In `@source/administration-guide/configure/compliance-configuration-settings.rst`:
- Around line 374-377: The documentation is inconsistent: the paragraph claims
exports are written to the "exports" subdirectory but the example config shows
"FileLocation": "export"; update one to match the other. Locate the text that
mentions the default directory ("exports" subdirectory) and the config example
showing "FileLocation": "export" and make them consistent (either change the
config example to "FileLocation": "exports" or change the paragraph to refer to
"export"), ensuring the displayed config value and the prose use the exact same
string.
In
`@source/administration-guide/configure/environment-configuration-settings.rst`:
- Around line 4319-4324: The paragraph stating the setting "can be set via mmctl
or changed in the database" contradicts the table that lists config.json and the
environment variable MM_JOBSETTINGS_CLEANUPCONFIGTHRESHOLDDAYS; pick one
authoritative management path and update the text so all references to
CleanupConfigThresholdDays (and MM_JOBSETTINGS_CLEANUPCONFIGTHRESHOLDDAYS) are
consistent—for example, change the sentence to state that the setting is only
configurable in the database (and via mmctl) and remove the config.json/env var
entries from the table, or vice versa, ensure the System Console line remains
N/A and adjust the other lines to match the chosen source of truth (config.json,
env var, or mmctl/database).
- Around line 4451-4452: The sentence in the resolver explanation contains a
grammar error: change "Mattermost resolve using the local resolver" to
"Mattermost resolves using the local resolver" (i.e., replace the phrase
"Mattermost resolve" with "Mattermost resolves") in the sentence that reads "If
that fails, Mattermost resolve using the local resolver (by reading the
``/etc/hosts`` file first), then checking for matching CIDR rules." Keep the
rest of the sentence and punctuation intact.
- Around line 1950-1952: The "config.json-only settings" subsection uses a '^'
underline which is inconsistent with adjacent subsections that use '~'; update
the RST heading underline for "config.json-only settings" to use the same '~'
character (and matching length) so the heading depth matches its peers and the
page's heading hierarchy remains sequential and consistent.
- Around line 2558-2560: The paragraph mixes units and double-applies the "* 24"
factor; update the wording to use consistent units and a clear formula: state
that MaxImageResolution is expressed in megabytes (MB), that each decoded image
uses approximately "MaxImageResolution * 24" megabytes, and that total
worst-case memory ≈ MaxImageResolution * MaxImageDecoderConcurrency * 24 (in
MB). Replace the ambiguous sentence "MaxImageResolution * 24 bytes" with this
clarified unit-aware formula, and keep the example using MaxImageResolution and
MaxImageDecoderConcurrency (e.g., 33 * 4 * 24 = 3168MB) so readers can perform
correct capacity planning; reference the MaxImageResolution and
MaxImageDecoderConcurrency settings when making the change.
- Around line 1955-1971: The :configjson: entries for the post- and file-search
settings use bare keys but should use full config.json paths; update the
:configjson: value for the enable-post-search block from "EnablePostSearch" to
"ServiceSettings.EnablePostSearch" and likewise update the enable-file-search
block's :configjson: from "EnableFileSearch" to
"ServiceSettings.EnableFileSearch" so they match the Mattermost config.json
structure and the page's existing pattern.
In
`@source/administration-guide/configure/experimental-configuration-settings.rst`:
- Around line 831-842: The new config setting directive
advanced-logging-selfhosted is present but lacks its full documentation section;
add a complete section under that directive that includes a clear section title
(e.g., "Advanced Logging — Self‑Hosted"), a prose description of behavior and
capability boundaries, and a config table showing relevant JSON keys, types,
default values, and example snippets for AdvancedLoggingJSON; update or add
notes about UI/Console availability (System Console: Experimental > Features)
and any environment restrictions so admins understand how to configure the
self-hosted variant, referencing the existing advanced-logging-selfhosted
directive and AdvancedLoggingJSON symbol to locate where to insert the content.
- Around line 627-651: Add the missing Sphinx metadata blocks for the two new
settings by inserting a ".. config:setting::" directive above each setting
section: one for "ExperimentalSettings.DisableAppBar" (the Disable app bar
section) and one for "ExperimentalSettings.ExperimentalViewArchivedChannels"
(the View archived channels section); ensure you follow the same local
style/format used elsewhere on the page (same indentation, inline code
formatting of the setting name, and options text) so the settings become
discoverable and indexable like the other documented config entries.
In `@source/administration-guide/configure/plugins-configuration-settings.rst`:
- Around line 2147-2165: The documentation duplicates/conflicts the availability
of the EnableUploads config key: the new "Enable plugin uploads" section claims
EnableUploads is config.json-only while an earlier "Upload Plugin" entry
documents a System Console path and environment variable for the same key;
reconcile them by either merging the two entries into a single authoritative
entry for the EnableUploads setting (keeping consistent metadata like
:configjson:, :systemconsole:, :environment: and the displayname) or explicitly
mark the new section as not config.json-only and update its metadata to match
the earlier "Upload Plugin" documentation so there is one source of truth for
EnableUploads.
- Around line 2153-2161: Replace the inconsistent UI label "Plugins >
Management" with the canonical product label "Plugins > Plugin Management"
wherever it appears in the "Enable plugin uploads" section (the block under the
"Enable plugin uploads" heading and the earlier bullet point), ensuring both
occurrences of the literal string "Plugins > Management" are updated to "Plugins
> Plugin Management" to match Mattermost's standard UI terminology.
- Around line 2167-2185: Add a warning admonition under the "Allow insecure
download URL" section to call out the supply-chain/security risk of enabling
insecure remote plugin downloads: reference the setting/section name
(allow-insecure-download-url / "Allow insecure download URL") and the
config.json key ("AllowInsecureDownloadUrl") and insert a warning-level RST
admonition that explains this enables insecure plugin download behavior, warns
to only enable for trusted sources or temporary testing, and recommends keeping
it false in production; ensure the admonition uses the RST warning directive so
it renders as a prominent caution.
In
`@source/administration-guide/configure/push-notification-server-configuration-settings.rst`:
- Around line 150-163: Update the new push-notification-buffer block to use the
scoped config key and valid JSON: change the `:configjson:` value from the
unscoped key to the properly scoped key used in config.json (e.g., the setting
name `PushNotificationSettings.PushNotificationBuffer` or whatever scoped key
your config uses), and fix the example JSON to remove the extra trailing quote
so the example is valid JSON (e.g., `"PushNotificationBuffer": 1000` as a
numeric value). Ensure you update the `push-notification-buffer` section
references to the corrected scoped key and the corrected JSON example so the
docs match the real config structure.
In `@source/administration-guide/configure/site-configuration-settings.rst`:
- Around line 460-473: Update the docs to use the fully-qualified config.json
key instead of the root key: change the :configjson: value and all references
from AllowedThemes to TeamSettings.AllowedThemes (match the scoped key pattern
used elsewhere on the page), and update the text and example to show the full
JSON path — e.g. show "TeamSettings": {"AllowedThemes": [...] } and the example
array like ["mattermostDark", "windows10"]; ensure references to
EnableThemeSelection remain unchanged.
- Around line 884-897: The doc currently shows the unscoped key
EnableUserStatuses; update the example and prose to show the full config.json
object path by replacing/unifying the snippet and text to use
"ServiceSettings.EnableUserStatuses": true (options true/false) and mention that
the key lives under ServiceSettings in config.json so admins can set it
correctly; ensure references to EnableUserStatuses in the section and the boxed
example are changed to ServiceSettings.EnableUserStatuses.
In
`@source/administration-guide/configure/user-management-configuration-settings.rst`:
- Around line 687-692: The :configjson: metadata for the restrict-system-admin
directive is incorrect—update the directive that begins with "..
config:setting:: restrict-system-admin" by replacing ":configjson: FileEnabled"
with the actual config key ":configjson: RestrictSystemAdmin" so the metadata
matches the real configuration setting (check the directive block containing
restrict-system-admin and the :configjson: line and change its value).
- Around line 703-705: Update the documentation example for the
"RestrictSystemAdmin" config so the JSON uses a real boolean instead of a
string: change the displayed setting from `"RestrictSystemAdmin": "false"` to
`"RestrictSystemAdmin": false` (and ensure the options list refers to true and
false without quotes) so that the config.json example is valid JSON; locate and
edit the occurrence of the "RestrictSystemAdmin" example in the
user-management-configuration-settings.rst content and fix the quoted boolean.
---
Nitpick comments:
In
`@source/administration-guide/configure/authentication-configuration-settings.rst`:
- Around line 1715-1716: The SAML subsection headings are using inconsistent
marker levels compared to nearby sections (e.g., the group heading
"config.json-only settings" and the SAML group/setting headings at the new SAML
subsection); update those headings so the group heading uses the same level
marker as neighboring groups and each per-setting heading is one deeper
(sequential hierarchy) to match the local pattern—adjust the SAML group heading
and its child setting headings at the referenced locations (the "SAML" group and
its per-setting headings) to the correct RST underline/overline marker levels so
they render and scan consistently.
In `@source/administration-guide/configure/compliance-configuration-settings.rst`:
- Around line 312-317: The new two-column grid table should be rewritten to
match the page’s existing single-line config table pattern used elsewhere:
replace the grid table for the SMTPServerTimeout entry with a single-line "This
feature’s `config.json` setting is
MessageExportSettings.GlobalRelaySettings.SMTPServerTimeout (default 1800
seconds); Environment variable
MM_MESSAGEEXPORTSETTINGS_GLOBALRELAYSETTINGS_SMTPSERVERTIMEOUT" style, and do
the same for the similar entry at 352-357 so both follow the local single-line
pattern for consistency.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: fd4cf42f-6333-46f6-8575-30388d981f07
📒 Files selected for processing (9)
source/administration-guide/configure/authentication-configuration-settings.rstsource/administration-guide/configure/compliance-configuration-settings.rstsource/administration-guide/configure/deprecated-configuration-settings.rstsource/administration-guide/configure/environment-configuration-settings.rstsource/administration-guide/configure/experimental-configuration-settings.rstsource/administration-guide/configure/plugins-configuration-settings.rstsource/administration-guide/configure/push-notification-server-configuration-settings.rstsource/administration-guide/configure/site-configuration-settings.rstsource/administration-guide/configure/user-management-configuration-settings.rst
| :configjson: ScopingIDPProviderId | ||
| :environment: N/A |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Verify where ScopingIDPProviderId / ScopingIDPName live in repo docs and source schema.
rg -n "ScopingIDPProviderId|ScopingIDPName|SamlSettings.*Scope|SamlSettings" -SRepository: mattermost/docs
Length of output: 26427
Update :configjson: paths for SAML scoping settings to match page conventions
Lines 1723 and 1741 use bare keys (ScopingIDPProviderId, ScopingIDPName), inconsistent with all other SAML settings on this page which use the .SamlSettings.* prefix. Update both to:
- Line 1723:
:configjson: .SamlSettings.ScopingIDPProviderId - Line 1741:
:configjson: .SamlSettings.ScopingIDPName
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@source/administration-guide/configure/authentication-configuration-settings.rst`
around lines 1723 - 1724, Update the two SAML scoping configjson keys to use the
same prefix as other SAML settings: change the bare keys ScopingIDPProviderId
and ScopingIDPName to .SamlSettings.ScopingIDPProviderId and
.SamlSettings.ScopingIDPName respectively so the :configjson: entries align with
the rest of the page’s naming convention.
| This setting isn't available in the System Console and can only be set in ``config.json``. | ||
|
|
||
| +---------------------------------------------------------------+-------------------------------------------------------------+ | ||
| | Standard setting for OAuth to determine the scope of | - System Config path: N/A | | ||
| | information shared with the OAuth client. | - ``config.json`` setting: ``GitLabSettings`` > ``Scope`` | | ||
| | | - Environment variable: ``MM_GITLABSETTINGS_SCOPE`` | | ||
| | String input. Not currently supported by GitLab OAuth. | | |
There was a problem hiding this comment.
“config.json-only” wording contradicts documented environment variable support
These blocks state settings can “only be set in config.json”, but each also provides an environment variable mapping. That’s contradictory and can mislead admins.
Suggested minimal wording fix
-This setting isn't available in the System Console and can only be set in ``config.json``.
+This setting isn't available in the System Console. Set it via ``config.json`` or the mapped environment variable.Based on learnings: “Describe Mattermost feature behavior, UI labels, and capability boundaries accurately”.
Also applies to: 2053-2059, 2204-2210
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@source/administration-guide/configure/authentication-configuration-settings.rst`
around lines 1930 - 1936, The document incorrectly says a setting "can only be
set in config.json" while the table lists an environment variable (e.g., the
GitLabSettings > Scope row); update the wording in the affected blocks to
accurately reflect both options (e.g., "This setting can be set in config.json
or via the corresponding environment variable") and apply the same change to the
other occurrences referenced (the blocks around lines 2053-2059 and 2204-2210)
so the System Console / config.json vs environment variable guidance is
consistent.
| Set the file location of the compliance exports. By default, they are written to the ``exports`` subdirectory of the configured :ref:`Local Storage directory <administration-guide/configure/environment-configuration-settings:local storage directory>`. | ||
|
|
||
| +-------------------------------------------------------------------------------------------+ | ||
| | This feature's ``config.json`` setting is ``"FileLocation": "export"`` with string input. | |
There was a problem hiding this comment.
export vs exports path wording is inconsistent.
Line 374 says the default writes to the exports subdirectory, but Line 377 documents the default config value as "FileLocation": "export". Please align these values to avoid admin misconfiguration.
Based on learnings, “Describe Mattermost feature behavior, UI labels, and capability boundaries accurately.”
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@source/administration-guide/configure/compliance-configuration-settings.rst`
around lines 374 - 377, The documentation is inconsistent: the paragraph claims
exports are written to the "exports" subdirectory but the example config shows
"FileLocation": "export"; update one to match the other. Locate the text that
mentions the default directory ("exports" subdirectory) and the config example
showing "FileLocation": "export" and make them consistent (either change the
config example to "FileLocation": "exports" or change the paragraph to refer to
"export"), ensuring the displayed config value and the prose use the exact same
string.
| config.json-only settings | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
|
There was a problem hiding this comment.
Heading depth is inconsistent in this subsection
This subsection uses ^ underlining while adjacent peer subsections in this area use ~, which breaks local hierarchy consistency and can affect navigation/rendering structure.
Suggested fix
-config.json-only settings
-^^^^^^^^^^^^^^^^^^^^^^^^^
+config.json-only settings
+~~~~~~~~~~~~~~~~~~~~~~~~~As per coding guidelines, "Keep heading hierarchy sequential and consistent with nearby sections instead of skipping levels or mixing styles within one page."
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| config.json-only settings | |
| ^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| config.json-only settings | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~ |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@source/administration-guide/configure/environment-configuration-settings.rst`
around lines 1950 - 1952, The "config.json-only settings" subsection uses a '^'
underline which is inconsistent with adjacent subsections that use '~'; update
the RST heading underline for "config.json-only settings" to use the same '~'
character (and matching length) so the heading depth matches its peers and the
page's heading hierarchy remains sequential and consistent.
| .. config:setting:: enable-post-search | ||
| :displayname: Enable post search (Enterprise Search) | ||
| :systemconsole: N/A | ||
| :configjson: EnablePostSearch | ||
| :environment: N/A | ||
| :description: If this setting is enabled, users can search messages. Default is **true**. | ||
|
|
||
| Enable post search | ||
| ~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| This setting isn't available in the System Console and can only be set in ``config.json``. | ||
|
|
||
| If this setting is enabled, users can search for messages in their Mattermost instance. | ||
|
|
||
| +-------------------------------------------------------------------------------------------------------------+ | ||
| | This feature's ``config.json`` setting is ``"EnablePostSearch": true`` with options ``true`` and ``false``. | | ||
| +-------------------------------------------------------------------------------------------------------------+ |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
# First, let's see the file size and read the context around the mentioned lines
wc -l source/administration-guide/configure/environment-configuration-settings.rstRepository: mattermost/docs
Length of output: 140
🏁 Script executed:
# Read lines around 1955-1971 to see the EnablePostSearch setting
sed -n '1950,2010p' source/administration-guide/configure/environment-configuration-settings.rstRepository: mattermost/docs
Length of output: 4213
🏁 Script executed:
# Check if there are other configjson entries to understand the pattern used on this page
rg -n "configjson:" source/administration-guide/configure/environment-configuration-settings.rst | head -20Repository: mattermost/docs
Length of output: 1107
🏁 Script executed:
# Search Mattermost main repository for config.json structure to verify the actual parent sections
git clone --depth 1 https://github.com/mattermost/mattermost /tmp/mattermost 2>&1 | grep -E "(Cloning|done)" || echo "Repo access checked"Repository: mattermost/docs
Length of output: 1042
🏁 Script executed:
# Search Mattermost source for where EnablePostSearch is defined to find parent section
find /tmp/mattermost -name "*.go" -o -name "*.json" | xargs grep -l "EnablePostSearch" 2>/dev/null | head -5Repository: mattermost/docs
Length of output: 352
🏁 Script executed:
# Check config structure files in mattermost
find /tmp/mattermost -path "*/config/*.go" | head -10Repository: mattermost/docs
Length of output: 490
🏁 Script executed:
# Search for SearchSettings or similar in mattermost
grep -r "SearchSettings\|EnablePostSearch\|EnableFileSearch" /tmp/mattermost/server --include="*.go" | grep -E "(type |SearchSettings|struct)" | head -20Repository: mattermost/docs
Length of output: 41
🏁 Script executed:
# Look at the config model file directly for search-related settings
grep -n "EnablePostSearch\|EnableFileSearch\|SearchSettings" /tmp/mattermost/server/public/model/config.go | head -30Repository: mattermost/docs
Length of output: 423
🏁 Script executed:
# Read the config.go file around where these settings might be defined
cat /tmp/mattermost/server/public/model/config.go | grep -A 5 -B 5 "EnablePostSearch\|EnableFileSearch"Repository: mattermost/docs
Length of output: 1664
🏁 Script executed:
# Try to find the struct that contains these settings
grep -n "type.*struct" /tmp/mattermost/server/public/model/config.go | head -20Repository: mattermost/docs
Length of output: 767
🏁 Script executed:
# Find which struct contains these settings by looking at context around line 408
sed -n '350,450p' /tmp/mattermost/server/public/model/config.go | head -100Repository: mattermost/docs
Length of output: 9533
🏁 Script executed:
# Also check for the exact struct name
sed -n '380,420p' /tmp/mattermost/server/public/model/config.goRepository: mattermost/docs
Length of output: 4025
🏁 Script executed:
# Verify the parent struct by checking the full struct definition
sed -n '332,500p' /tmp/mattermost/server/public/model/config.go | head -50Repository: mattermost/docs
Length of output: 5030
🏁 Script executed:
# Confirm ServiceSettings contains these fields
grep -B 100 "EnablePostSearch" /tmp/mattermost/server/public/model/config.go | grep "^type" | tail -1Repository: mattermost/docs
Length of output: 88
🏁 Script executed:
# Verify the exact config.json structure by checking a test or default config
cat /tmp/mattermost/server/tests/test-config.json | jq '.ServiceSettings | keys | .[]' | grep -i "EnablePost\|EnableFile\|EnableCross"Repository: mattermost/docs
Length of output: 155
🏁 Script executed:
# Double-check that EnablePostSearch and EnableFileSearch are indeed under ServiceSettings
jq '.ServiceSettings | {EnablePostSearch, EnableFileSearch, EnableCrossTeamSearch}' /tmp/mattermost/server/tests/test-config.jsonRepository: mattermost/docs
Length of output: 150
Fix configjson paths to match page pattern and Mattermost config structure
On lines 1958 and 1987, :configjson: documents bare keys (EnablePostSearch, EnableFileSearch) while this page consistently documents full paths. These settings belong under ServiceSettings and should match the pattern used throughout the file and the actual config.json structure to prevent admin errors during configuration.
Suggested fix
- :configjson: EnablePostSearch
+ :configjson: .ServiceSettings.EnablePostSearch- :configjson: EnableFileSearch
+ :configjson: .ServiceSettings.EnableFileSearch🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@source/administration-guide/configure/environment-configuration-settings.rst`
around lines 1955 - 1971, The :configjson: entries for the post- and file-search
settings use bare keys but should use full config.json paths; update the
:configjson: value for the enable-post-search block from "EnablePostSearch" to
"ServiceSettings.EnablePostSearch" and likewise update the enable-file-search
block's :configjson: from "EnableFileSearch" to
"ServiceSettings.EnableFileSearch" so they match the Mattermost config.json
structure and the page's existing pattern.
| :configjson: PushNotificationBuffer | ||
| :environment: N/A | ||
| :description: Used to control the buffer of outstanding Push Notification messages to be sent. Default is **1000** notifications. | ||
|
|
||
| Push notification buffer | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| This setting isn't available in the System Console and can only be set in ``config.json``. | ||
|
|
||
| Used to control the buffer of outstanding Push Notification messages to be sent. If the number of messages exceeds that number, then the request making the Push Notification will be blocked until there's room. | ||
|
|
||
| +---------------------------------------------------------------------------------------------------------------------------------------------+ | ||
| | This feature's ``config.json`` setting is ``"PushNotificationBuffer": 1000"`` with numerical input. | | ||
| +---------------------------------------------------------------------------------------------------------------------------------------------+ |
There was a problem hiding this comment.
Fix config.json path scope and malformed JSON example for push-notification-buffer.
Two issues in this new block:
:configjson:uses an unscoped key.- The example has invalid syntax due to an extra trailing quote after
1000.
Suggested minimal diff
- :configjson: PushNotificationBuffer
+ :configjson: .EmailSettings.PushNotificationBuffer
...
-| This feature's ``config.json`` setting is ``"PushNotificationBuffer": 1000"`` with numerical input. |
+| This feature's ``config.json`` setting is ``"EmailSettings.PushNotificationBuffer": 1000`` with numerical input. |As per coding guidelines: "Describe Mattermost feature behavior, UI labels, and capability boundaries accurately".
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| :configjson: PushNotificationBuffer | |
| :environment: N/A | |
| :description: Used to control the buffer of outstanding Push Notification messages to be sent. Default is **1000** notifications. | |
| Push notification buffer | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~ | |
| This setting isn't available in the System Console and can only be set in ``config.json``. | |
| Used to control the buffer of outstanding Push Notification messages to be sent. If the number of messages exceeds that number, then the request making the Push Notification will be blocked until there's room. | |
| +---------------------------------------------------------------------------------------------------------------------------------------------+ | |
| | This feature's ``config.json`` setting is ``"PushNotificationBuffer": 1000"`` with numerical input. | | |
| +---------------------------------------------------------------------------------------------------------------------------------------------+ | |
| :configjson: .EmailSettings.PushNotificationBuffer | |
| :environment: N/A | |
| :description: Used to control the buffer of outstanding Push Notification messages to be sent. Default is **1000** notifications. | |
| Push notification buffer | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~ | |
| This setting isn't available in the System Console and can only be set in ``config.json``. | |
| Used to control the buffer of outstanding Push Notification messages to be sent. If the number of messages exceeds that number, then the request making the Push Notification will be blocked until there's room. | |
| ---------------------------------------------------------------------------------------------------------------------------------------------+ | |
| | This feature's ``config.json`` setting is ``"EmailSettings.PushNotificationBuffer": 1000`` with numerical input. | | |
| ---------------------------------------------------------------------------------------------------------------------------------------------+ |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@source/administration-guide/configure/push-notification-server-configuration-settings.rst`
around lines 150 - 163, Update the new push-notification-buffer block to use the
scoped config key and valid JSON: change the `:configjson:` value from the
unscoped key to the properly scoped key used in config.json (e.g., the setting
name `PushNotificationSettings.PushNotificationBuffer` or whatever scoped key
your config uses), and fix the example JSON to remove the extra trailing quote
so the example is valid JSON (e.g., `"PushNotificationBuffer": 1000` as a
numeric value). Ensure you update the `push-notification-buffer` section
references to the corrected scoped key and the corrected JSON example so the
docs match the real config structure.
| :configjson: AllowedThemes | ||
| :environment: N/A | ||
| :description: Select the themes that can be chosen by users when ``EnableThemeSelection`` is set to ``true``. | ||
|
|
||
| Allowed themes | ||
| ~~~~~~~~~~~~~~ | ||
|
|
||
| This setting isn't available in the System Console and can only be set in ``config.json``. | ||
|
|
||
| Select the themes that can be chosen by users when ``EnableThemeSelection`` is set to ``true``. | ||
|
|
||
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | ||
| | This feature's ``config.json`` setting is ``"AllowedThemes": []`` with string array input consisting of the options ``"default"``, ``"organization"``, ``"mattermostDark"``, and ``"windows10"``, such as ``["mattermostDark", "windows10"]``. | | ||
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
There was a problem hiding this comment.
Use the fully-qualified config.json path for Allowed themes.
AllowedThemes is documented as a root key, but this page consistently documents scoped keys (for example, TeamSettings > key). Please update this to the full path to avoid misconfiguration.
Suggested minimal diff
- :configjson: AllowedThemes
+ :configjson: .TeamSettings.AllowedThemes
...
-| This feature's ``config.json`` setting is ``"AllowedThemes": []`` with string array input consisting of the options ``"default"``, ``"organization"``, ``"mattermostDark"``, and ``"windows10"``, such as ``["mattermostDark", "windows10"]``. |
+| This feature's ``config.json`` setting is ``"TeamSettings.AllowedThemes": []`` with string array input consisting of the options ``"default"``, ``"organization"``, ``"mattermostDark"``, and ``"windows10"``, such as ``["mattermostDark", "windows10"]``. |Based on learnings: "Describe Mattermost feature behavior, UI labels, and capability boundaries accurately".
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| :configjson: AllowedThemes | |
| :environment: N/A | |
| :description: Select the themes that can be chosen by users when ``EnableThemeSelection`` is set to ``true``. | |
| Allowed themes | |
| ~~~~~~~~~~~~~~ | |
| This setting isn't available in the System Console and can only be set in ``config.json``. | |
| Select the themes that can be chosen by users when ``EnableThemeSelection`` is set to ``true``. | |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |
| | This feature's ``config.json`` setting is ``"AllowedThemes": []`` with string array input consisting of the options ``"default"``, ``"organization"``, ``"mattermostDark"``, and ``"windows10"``, such as ``["mattermostDark", "windows10"]``. | | |
| +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |
| :configjson: .TeamSettings.AllowedThemes | |
| :environment: N/A | |
| :description: Select the themes that can be chosen by users when ``EnableThemeSelection`` is set to ``true``. | |
| Allowed themes | |
| ~~~~~~~~~~~~~~ | |
| This setting isn't available in the System Console and can only be set in ``config.json``. | |
| Select the themes that can be chosen by users when ``EnableThemeSelection`` is set to ``true``. | |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |
| | This feature's ``config.json`` setting is ``"TeamSettings.AllowedThemes": []`` with string array input consisting of the options ``"default"``, ``"organization"``, ``"mattermostDark"``, and ``"windows10"``, such as ``["mattermostDark", "windows10"]``. | | |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@source/administration-guide/configure/site-configuration-settings.rst` around
lines 460 - 473, Update the docs to use the fully-qualified config.json key
instead of the root key: change the :configjson: value and all references from
AllowedThemes to TeamSettings.AllowedThemes (match the scoped key pattern used
elsewhere on the page), and update the text and example to show the full JSON
path — e.g. show "TeamSettings": {"AllowedThemes": [...] } and the example array
like ["mattermostDark", "windows10"]; ensure references to EnableThemeSelection
remain unchanged.
| :configjson: EnableUserStatuses | ||
| :environment: N/A | ||
| :description: Turn status updates off to improve performance. Default is **true**. | ||
|
|
||
| Enable user status updates | ||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
|
||
| This setting isn't available in the System Console and can only be set in ``config.json``. | ||
|
|
||
| Turn status updates off to improve performance. When status updates are off, users appear online only for brief periods when posting a message, and only to members of the channel in which the message is posted. | ||
|
|
||
| +---------------------------------------------------------------------------------------------------------------+ | ||
| | This feature's ``config.json`` setting is ``"EnableUserStatuses": true`` with options ``true`` and ``false``. | | ||
| +---------------------------------------------------------------------------------------------------------------+ |
There was a problem hiding this comment.
Enable user status updates should also use a scoped config.json path.
EnableUserStatuses is currently documented as unscoped. Please document the exact object path so admins can set it correctly in config.json.
Suggested minimal diff
- :configjson: EnableUserStatuses
+ :configjson: .ServiceSettings.EnableUserStatuses
...
-| This feature's ``config.json`` setting is ``"EnableUserStatuses": true`` with options ``true`` and ``false``. |
+| This feature's ``config.json`` setting is ``"ServiceSettings.EnableUserStatuses": true`` with options ``true`` and ``false``. |Based on learnings: "Describe Mattermost feature behavior, UI labels, and capability boundaries accurately".
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@source/administration-guide/configure/site-configuration-settings.rst` around
lines 884 - 897, The doc currently shows the unscoped key EnableUserStatuses;
update the example and prose to show the full config.json object path by
replacing/unifying the snippet and text to use
"ServiceSettings.EnableUserStatuses": true (options true/false) and mention that
the key lives under ServiceSettings in config.json so admins can set it
correctly; ensure references to EnableUserStatuses in the section and the boxed
example are changed to ServiceSettings.EnableUserStatuses.
| .. config:setting:: restrict-system-admin | ||
| :displayname: Restrict system admin (User Management) | ||
| :systemconsole: N/A | ||
| :configjson: FileEnabled | ||
| :environment: N/A | ||
| :description: Enable this setting to restrict the system admin from viewing and modifying a subset of server configuration settings from the System Console. Default value is **false**. |
There was a problem hiding this comment.
Critical: Incorrect config.json key in directive metadata.
Line 690 shows :configjson: FileEnabled, but line 704 correctly identifies the actual setting as RestrictSystemAdmin. The directive metadata must match the real configuration key to ensure accuracy.
🔧 Proposed fix
.. config:setting:: restrict-system-admin
:displayname: Restrict system admin (User Management)
:systemconsole: N/A
- :configjson: FileEnabled
+ :configjson: RestrictSystemAdmin
:environment: N/A
:description: Enable this setting to restrict the system admin from viewing and modifying a subset of server configuration settings from the System Console. Default value is **false**.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@source/administration-guide/configure/user-management-configuration-settings.rst`
around lines 687 - 692, The :configjson: metadata for the restrict-system-admin
directive is incorrect—update the directive that begins with "..
config:setting:: restrict-system-admin" by replacing ":configjson: FileEnabled"
with the actual config key ":configjson: RestrictSystemAdmin" so the metadata
matches the real configuration setting (check the directive block containing
restrict-system-admin and the :configjson: line and change its value).
| +-------------------------------------------------------------------------------------------------------------------+ | ||
| | This feature's ``config.json`` setting is ``"RestrictSystemAdmin": "false"`` with options ``true`` and ``false``. | | ||
| +-------------------------------------------------------------------------------------------------------------------+ |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Check boolean value syntax patterns in config.json documentation
# Search for similar config.json setting patterns to verify boolean syntax convention
rg -C3 'config\.json.*setting.*true.*false' --type=rst source/administration-guide/configure/Repository: mattermost/docs
Length of output: 50371
Fix incorrect JSON boolean syntax in the config.json documentation.
Line 704 currently shows: "RestrictSystemAdmin": "false" — the boolean value should be unquoted. In JSON, boolean values must be lowercase keywords without quotes (true or false), not strings ("true" or "false").
Replace with: "RestrictSystemAdmin": false with options true and false.
Administrators who copy this example into their config.json file with quoted boolean values will have incorrect configuration syntax.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@source/administration-guide/configure/user-management-configuration-settings.rst`
around lines 703 - 705, Update the documentation example for the
"RestrictSystemAdmin" config so the JSON uses a real boolean instead of a
string: change the displayed setting from `"RestrictSystemAdmin": "false"` to
`"RestrictSystemAdmin": false` (and ensure the options list refers to true and
false without quotes) so that the config.json example is valid JSON; locate and
edit the occurrence of the "RestrictSystemAdmin" example in the
user-management-configuration-settings.rst content and fix the quoted boolean.
This comprehensive reorganization moves 86 experimental configuration settings to their appropriate documentation locations based on their actual access tags in the source code.
Summary
Additionally:
Final result: 45 experimental settings properly organized in experimental-configuration-settings.rst.
Fixes #8726
Generated with Claude Code